package top.jiangqiang.qyblog.core.constant;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Getter;
import top.jiangqiang.qyblog.common.exception.JsonException;

/**
 * 支持的存储器类型
 *
 * @author Jiangqiang
 */
//序列化为json类型，默认序列化为枚举的名字 查询支持的存储器类型的接口需要使用
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
@Getter
@AllArgsConstructor
public enum StorageTypeEnum {
    S3("s3", "S3对象存储"),
    LOCAL("local", "本地存储（暂不支持）"),
    ;

    /**
     * 存入数据库时使用此属性作为枚举的值
     */
    @EnumValue
    private final String type;
    private final String name;

    public static StorageTypeEnum getByType(String type) {
        for (StorageTypeEnum value : values()) {
            if (value.getType().equals(type)) {
                return value;
            }
        }
        throw new JsonException("存储器类型[" + type + "]不合法");
    }
}
